本文同步更新於blog
狀態模式會將類別分為兩類:
分別是情境類別 (Context) 與 狀態類別 (State)。
當前對象會隨著內部狀態,改變它的行為。
狀態模式涉及了有限狀態機(Finite-State Machine) 的概念。
有限個狀態,彼此間因動作而造成狀態轉移的系統,
同一時間內只會表現出一種狀態。
優點:
將狀態類抽離,可讓當前對象複雜的條件判斷簡化。
即消除龐大的條件分支敘述。
缺點:
會製造出許多的小類別。
與其他模式的比較:
[簡單工廠模式]:
簡單工廠模式的物件,創造後行為就不會改變了。
而狀態模式則可能因應其狀態,做出不同的行為。
[策略模式]:
定義算法族,委派給不同的物件。
而狀態模式中的小類別層級,皆可獨立運作。
ʕ •ᴥ•ʔ:狀態模式有點像是簡單工廠模式 + 策略模式的結合應用。